home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 4 / Apprentice-Release4.iso / Source Code / C / Applications / Portable Patmos / usr / include / net / if_ppp.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-08  |  4.6 KB  |  121 lines  |  [TEXT/R*ch]

  1. /*
  2.  * if_ppp.h - Point-to-Point Protocol definitions.
  3.  *
  4.  * Copyright (c) 1989 Carnegie Mellon University.
  5.  * All rights reserved.
  6.  *
  7.  * Redistribution and use in source and binary forms are permitted
  8.  * provided that the above copyright notice and this paragraph are
  9.  * duplicated in all such forms and that any documentation,
  10.  * advertising materials, and other materials related to such
  11.  * distribution and use acknowledge that the software was developed
  12.  * by Carnegie Mellon University.  The name of the
  13.  * University may not be used to endorse or promote products derived
  14.  * from this software without specific prior written permission.
  15.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  16.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  17.  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  18.  *
  19.  * Modified by Paul Mackerras (paulus@cs.anu.edu.au)
  20.  * Added PPP_MRU, sc_outm, sc_fastq, sc_bpf.
  21.  *
  22.  * $Id: if_ppp.h,v 1.3 1993/11/09 06:23:01 glass Exp $
  23.  */
  24.  
  25. /* Portions Copyright (C) 1990 Brad K. Clements (streams support)
  26.    (huh?  there isn't any streams support in this file)
  27. */
  28.  
  29. /*
  30.  * Standard PPP header.
  31.  */
  32. struct ppp_header {
  33.     u_char    ph_address;    /* Address Field */
  34.     u_char    ph_control;    /* Control Field */
  35.     u_short    ph_protocol;    /* Protocol Field */
  36. };
  37.  
  38. #define PPP_HEADER_LEN    4    /* octets, must == sizeof(struct ppp_header) */
  39. #define PPP_FCS_LEN    2    /* octets for FCS */
  40.  
  41. #define    PPP_ALLSTATIONS    0xff    /* All-Stations broadcast address */
  42. #define    PPP_UI        0x03    /* Unnumbered Information */
  43. #define    PPP_FLAG    0x7e    /* Flag Sequence */
  44. #define    PPP_ESCAPE    0x7d    /* Asynchronous Control Escape */
  45. #define    PPP_TRANS    0x20    /* Asynchronous transparency modifier */
  46.  
  47. /*
  48.  * Protocol types.
  49.  */
  50. #define PPP_IP        0x21    /* Internet Protocol */
  51. #define    PPP_XNS        0x25    /* Xerox NS */
  52. #define    PPP_VJC_COMP    0x2d    /* VJ compressed TCP */
  53. #define    PPP_VJC_UNCOMP    0x2f    /* VJ uncompressed TCP */
  54. #define PPP_LCP        0xc021    /* Link Control Protocol */
  55.  
  56. /*
  57.  * Important FCS values.
  58.  */
  59. #define PPP_INITFCS    0xffff    /* Initial FCS value */
  60. #define PPP_GOODFCS    0xf0b8    /* Good final FCS value */
  61. #define PPP_FCS(fcs, c)    (((fcs) >> 8) ^ fcstab[((fcs) ^ (c)) & 0xff])
  62.  
  63. #define    PPP_MTU        1500    /* Default MTU (size of Info field) */
  64. #define PPP_MRU        1500    /* Default MRU (max receive unit) */
  65. #define PPP_MAXMRU    65000    /* Largest MRU we allow */
  66. #define    PPP_HIWAT    400    /* Don't start a new packet if HIWAT on que */
  67.  
  68. struct ppp_softc {
  69.     struct ifnet sc_if;    /* network-visible interface */
  70.     u_int    sc_flags;    /* see below */
  71.     struct    tty *sc_ttyp;    /* pointer to tty structure */
  72.     struct    mbuf *sc_outm;    /* mbuf chain being output currently */
  73.     struct    mbuf *sc_m;    /* pointer to input mbuf chain */
  74.     struct    mbuf *sc_mc;    /* pointer to current input mbuf */
  75.     char    *sc_mp;        /* pointer to next char in input mbuf */
  76.     short    sc_ilen;    /* length of input-packet-so-far */
  77.     u_short    sc_fcs;        /* FCS so far (input) */
  78.     u_short    sc_outfcs;    /* FCS so far for output packet */
  79.     short    sc_mru;        /* max receive unit */
  80.     u_long    sc_asyncmap;    /* async control character map */
  81.     u_long    sc_rasyncmap;    /* receive async control char map */
  82.     struct    ifqueue sc_inq;    /* TTY side input queue */
  83.     struct    ifqueue sc_fastq; /* IP interactive output packet queue */
  84. #ifdef    VJC
  85.     struct    slcompress sc_comp; /* vjc control buffer */
  86. #endif
  87.     u_int    sc_bytessent;
  88.     u_int    sc_bytesrcvd;
  89.     caddr_t    sc_bpf;
  90. };
  91.  
  92. /* flags */
  93. #define SC_COMP_PROT    0x00000001    /* protocol compression (output) */
  94. #define SC_COMP_AC    0x00000002    /* header compression (output) */
  95. #define    SC_COMP_TCP    0x00000004    /* TCP (VJ) compression (output) */
  96. #define SC_NO_TCP_CCID    0x00000008    /* disable VJ connection-id comp. */
  97. #define SC_REJ_COMP_AC    0x00000010    /* reject adrs/ctrl comp. on input */
  98. #define SC_REJ_COMP_TCP    0x00000020    /* reject TCP (VJ) comp. on input */
  99. #define    SC_MASK        0x0000ffff    /* bits that user can change */
  100.  
  101. /* state bits */
  102. #define    SC_ESCAPED    0x00010000    /* saw a PPP_ESCAPE */
  103. #define    SC_FLUSH    0x00020000    /* flush input until next PPP_FLAG */
  104.  
  105. /* this stuff doesn't belong here... */
  106. #define    PPPIOCGFLAGS    _IOR('t', 90, int)    /* get configuration flags */
  107. #define    PPPIOCSFLAGS    _IOW('t', 89, int)    /* set configuration flags */
  108. #define    PPPIOCGASYNCMAP    _IOR('t', 88, int)    /* get async map */
  109. #define    PPPIOCSASYNCMAP    _IOW('t', 87, int)    /* set async map */
  110. #define    PPPIOCGUNIT    _IOR('t', 86, int)    /* get ppp unit number */
  111. #define    PPPIOCGRASYNCMAP _IOR('t', 85, int)    /* get receive async map */
  112. #define    PPPIOCSRASYNCMAP _IOW('t', 84, int)    /* set receive async map */
  113. #define    PPPIOCGMRU    _IOR('t', 83, int)    /* get max receive unit */
  114. #define    PPPIOCSMRU    _IOW('t', 82, int)    /* set max receive unit */
  115.  
  116. /* old copies of PPP may have defined this */
  117. #if !defined(ifr_mtu)
  118. #define ifr_mtu    ifr_metric
  119. #endif
  120.  
  121.